﻿using System;
using System.Text;
using System.Web.Script.Serialization;

namespace Job.Core.Web
{
    /// <summary>
    /// Json 序列化、反序列化扩展。
    /// </summary>
    public static class SerializationExtensions
    {
        /// <summary>
        /// 将一个对象序列化生成为 Json 格式的字串。
        /// </summary>
        /// <param name="item"></param>
        /// <returns>Json 格式的字串。</returns>
        public static string ToJson(this object item)
        {
            return (new JavaScriptSerializer()).Serialize(item);
        }

        /// <summary>
        /// 将 Json 格式的字串反序列化为指定的对象，转换失败时返回类型的默认值。
        /// </summary>
        /// <typeparam name="T">类型。</typeparam>
        /// <param name="json">Json 字串。</param>
        /// <returns>转换后的实例，转换失败时返回类型的默认值。</returns>
        public static T FromJson<T>(this string json)
        {
            var jss = new JavaScriptSerializer();
            try
            {
                return jss.Deserialize<T>(json);
            }
            catch
            {
                return default(T);
            }
        }
    }
}
